import { defineStore } from 'pinia';

/**
 * 定义字典项的接口
 */
interface DictItem {
  key: string;
  value: any;
}

/**
 * 字典存储
 */
const useDictStore = defineStore(
  'dict',
  {
    /**
     * 状态定义
     */
    state: () => ({
      /**
       * 字典数组
       */
      dict: new Array<DictItem>()
    }),

    /**
     * 动作定义
     */
    actions: {
      /**
       * 获取字典项
       * @param _key - 字典键
       * @returns 字典值或 null
       */
      getDict(_key: string | null): any | null {
        if (_key == null || _key === '') {
          return null;
        }
        try {
          for (let i = 0; i < this.dict.length; i++) {
            if (this.dict[i].key === _key) {
              return this.dict[i].value;
            }
          }
        } catch (e) {
          return null;
        }
        return null;
      },

      /**
       * 设置字典项
       * @param _key - 字典键
       * @param value - 字典值
       */
      setDict(_key: string | null, value: any): void {
        if (_key !== null && _key !== '') {
          this.dict.push({
            key: _key,
            value: value
          });
        }
      },

      /**
       * 删除字典项
       * @param _key - 字典键
       * @returns 是否删除成功
       */
      removeDict(_key: string | null): boolean {
        if (_key == null || _key === '') {
          return false;
        }
        try {
          for (let i = 0; i < this.dict.length; i++) {
            if (this.dict[i].key === _key) {
              this.dict.splice(i, 1);
              return true;
            }
          }
        } catch (e) {
          return false;
        }
        return false;
      },

      /**
       * 清空字典
       */
      cleanDict(): void {
        this.dict = new Array<DictItem>();
      },

      /**
       * 初始化字典
       */
      initDict(): void {
        // 可以在这里添加初始化逻辑
      }
    }
  }
);

export default useDictStore;